Apache Cassandra

Apache Cassandra
Parte de software libre
Información general
Tipo de programa sistema de gestión de bases de datos
Autor Avinash Lakshman, Prashant Malik
Desarrollador Apache Software Foundation
Lanzamiento inicial 2008
Licencia Apache License 2.0
Estado actual Activo
Información técnica
Programado en Java
Versiones
Última versión estable 3.11.7 (25 de julio de 2020) ()
Última versión en pruebas 5.0-beta15 de diciembre de 2023
Enlaces

Apache Cassandra se trata de un software NoSQL distribuido y basado en un modelo de almacenamiento «tabular», de código abierto que está escrito en Java. Permite grandes volúmenes de datos en forma distribuida. Por ejemplo, lo usa Twitter para su plataforma. Su objetivo principal es la escalabilidad lineal y la disponibilidad. La arquitectura distribudores de Cassandra está basada en una serie de nodos iguales que se comunican con un protocolo P2P con lo que la redundancia es máxima. Esta soportada por la Apache Software Fundation.

Cassandra se basa en una arquitectura distribuida que permite replicar los datos en múltiples nodos, proporcionando tolerancia a fallos y garantizando que los datos permanezcan disponibles incluso en caso de fallos de hardware o de red. Está diseñado para manejar datos estructurados y semi-estructurados, con soporte para una amplia gama de tipos de datos, incluyendo cadenas, enteros, flotantes, marcas de tiempo y UUID.

Cassandra ofrece soporte robusto para múltiples Centros de datos,[1]​ con replicación asincrónica sin necesidad de un servidor maestro, lo que permiten operaciones de baja latencia para todos los clientes.

Debido a que es una base de datos distribuida, Cassandra funciona con múltiples nodos, en donde cada uno representa una instancia de Cassandra. Estos nodos se comunican los unos con los otros mediante un protocolo llamado gossip (chisme), el cual es un proceso de comunicación de tipo peer-to-peer. A su vez funciona como una malla de tipo anillo, en donde no hay maestro y trabajadores, es decir cada nodo tiene la misma funcionalidad y capacidades que los demás, lo cual contribuye a que Cassandra sea más robusta y tenga mejor resiliencia.

Otro beneficio en cuanto al uso de Cassandra es su capacidad de escalabilidad, ya que permite que los desarrolladores escalen o incluso encojan su base de datos de forma dinámica sin necesidad de interrumpir el sistema.

Cassandra también ofrece un gran rendimiento. En 2012, investigadores de la Universidad de Toronto que estudian los sistemas NoSQL concluyeron que "En términos de escalabilidad, hay un claro ganador a través de nuestros experimentos. Cassandra logra el más alto rendimiento para el número máximo de nodos en todos los experimentos", aunque "esto tiene como precio una alta latencia de escritura y lectura".[2]

El modelo de datos de Cassandra consiste en particionar las filas, que son reorganizadas en tablas .[3]​ Las claves primarias de cada tabla tiene un primer componente que es la clave de partición. Dentro de una partición, las filas son agrupadas por las columnas restantes de la clave.[4]​ Las demás columnas pueden ser indexadas por separado de la clave primaria.[5]

Las tablas se pueden crear, eliminar y alterar en tiempo de ejecución sin bloquear actualizaciones y consultas.[6]

Cassandra no soporta la sentencia JOIN o subqueries, sino que enfatiza en la desnormalización a través de características como colecciones.[7]

En las versiones iniciales utilizaba un API propia para poder acceder a la base de datos. En los últimos tiempos están apostando por un lenguaje denominado CQL (Cassandra Query Language, no confundir con Contextual Query Language) que posee una sintaxis similar a SQL aunque con muchas menos funcionalidades. Esto hace que iniciarse en el uso de la misma sea más sencillo. Permite acceder en Java desde JDBC.

  1. Casares, Joaquin (5 de noviembre de 2012). «Multi-datacenter Replication in Cassandra». DataStax. Consultado el 25 de julio de 2013. «Cassandra’s innate datacenter concepts are important as they allow multiple workloads to be run across multiple datacenters…». 
  2. Rabl, Tilmann; Sadoghi, Mohammad; Jacobsen, Hans-Arno; Villamor, Sergio Gomez-; Mulero -, Victor Muntes; Mankovskii, Serge (27 de agosto de 2012). «Solving Big Data Challenges for Enterprise Application Performance Management». VLDB. Consultado el 25 de julio de 2013. «In terms of scalability, there is a clear winner throughout our experiments. Cassandra achieves the highest throughput for the maximum number of nodes in all experiments... this comes at the price of high write and read latencies». 
  3. DataStax (15 de enero de 2013). «About data consistency». Archivado desde el original el 26 de julio de 2013. Consultado el 25 de julio de 2013. 
  4. Ellis, Jonathan (15 de febrero de 2012). «Schema in Cassandra 1.1». DataStax. Consultado el 25 de julio de 2013. 
  5. Ellis, Jonathan (3 de diciembre de 2010). «What’s new in Cassandra 0.7: Secondary indexes». DataStax. Archivado desde el original el 30 de junio de 2013. Consultado el 25 de julio de 2013. 
  6. Ellis, Jonathan (2 de marzo de 2012). «The Schema Management Renaissance in Cassandra 1.1». DataStax. Consultado el 25 de julio de 2013. 
  7. Lebresne, Sylvain (5 de agosto de 2012). «Coming in 1.2: Collections support in CQL3». DataStax. Consultado el 25 de julio de 2013. 

Developed by StudentB